import numpy as np
NumPy (Numerical Python) je Pythonovská knižnica, ktorá je určená pre prácu s viacrozmernými homogennými poliami.
Ďalšie informácie:
V tomto kurze budeme pracovať výlučne s jednorozmernými poliami.
Príklady:
>>> np.info(np.array)
>>> np.array?
>>> np.array*?
>>> np.lookfor('array')
Tu sa zoznámime s dvoma základnými spôsobmi konštrukcie poľa typundarray
.
Z nejakého kontajneru, napr. zo štandartného pythonovského poľa (list
):
>>> A = np.array([0, 1, 2, 3]) # testovacie pole
>>> A
>>> len(A)
>>> type(A)
>>> A.dtype # atribút: typ prvkov v poli
Funkcia np.linspace
vytvorí pole typu ndarray
s prvkami, ktoré tvoria homogénne delenie uzavretého intervalu.
>>> np.linspace(0, 10, 100+1) # argumenty: od, do (vrátane), počet prvkov (štandardne 50)
>>> np.linspace(0, 10, 100) # argumenty: od, do (vrátane), počet prvkov (štandardne 50)
Porovnajte výsledky oboch aplikácií. Čím sa líšia?
Funkcie np.zeros
a np.ones
vytvoria polia typu ndarray
zo samých núl resp. zo samých jednotiek.
>>> np.zeros(10) # argument: dĺžka poľa
>>> np.ones(10) # argument: dĺžka poľa
Funkcia np.random.randint
vytvorí pole typu ndarray
z náhodne vygenerovaných čísel.
>>> np.random.randint(1, 100, size=10) # argumenty: od, do (vylučujúce), počet prvkov
V tejto časti sa zoznámime s funkciami, ktoré umožňujú operovať na poliach typu ndarray
po prvkoch. V matematike sa takéto funkcie nazývajú vektorové operácie. V knižnici numpy
sa pre ne používa označenie univerzálne funkcie (ufunc
).
>>> np.lookfor('ufunc')
>>> np.info('ufunc')
Binárne operácie, kde jeden argument je pole typu ndarray
a druhý argument je skalár.
>>> A = np.array([1, 2, 3, 4]) # testovacie pole
>>> A + 2
>>> A - 2
>>> A * 2
>>> A / 2
>>> A ** 2
>>> 2 + A
>>> 2 - A
>>> 2 * A
>>> 2 / A
>>> 2 ** A
Binárne operácie, kde oba argumenty sú polia typu ndarray
.
>>> A = np.array([1, 2, 3, 4]) # testovacie pole
>>> B = np.array([8, 7, 6, 5]) # testovacie pole
>>> A + B
>>> A - B
>>> A * B
>>> A / B
>>> A ** B
>>> A ** 2 + 2 * A + 1
>>> A * A + 2 * A * B + B * B
Výsledkom porovnania je boolovské pole typu ndarray
. Jeden argument je pole typu ndarray
a druhý argument môže byť skalár.
>>> A = np.array([1, 9, 4, 6, 3, 8]) # testovacie pole
>>> A < 5
>>> A % 2 == 0
>>> B = np.array([2, 8, 4, 7, 3, 6]) # iné testovacie pole
>>> A == B
>>> A <= B
Výrokovologické operácie aplikované na boolovské polia typu ndarray
.
>>> A = np.random.randint(1, 100, size=10) # testovacie pole
>>> print(A)
>>> ~(A < 50) # negácia
>>> (A < 50) & (A % 2 == 0) # konjunkcia
>>> (A < 50) | (A % 2 == 0) # disjunkcia
Pre rezy na poliach môžme použiť masky. Sú to boolovské polia typu ndarray
.
>>> A = np.random.randint(1, 100, size=20) # testovacie pole
>>> print(A)
>>> A[(A < 50) & (A % 2 == 0)] # extrakcia podpoľa pomocou masky
>>> A[(A < 50) & (A % 2 == 0)] = 222 # priradenie do rezu určeného maskou